/******************************************************************************
*
* Copyright (C) 2016 Hisilicon Technologies Co., Ltd.  All rights reserved.
*
* This program is confidential and proprietary to Hisilicon  Technologies Co., Ltd. (Hisilicon),
*  and may not be copied, reproduced, modified, disclosed to others, published or used, in
* whole or in part, without the express prior written permission of Hisilicon.
*
*****************************************************************************

  File Name    : pq_hal_hdr.c
  Version       : Initial Draft
  Author        : sdk
                      sdk
  Created      : 2016/06/15
  Description  :

******************************************************************************/
#include <linux/string.h>

#include "hi_type.h"
#include "hi_math.h"

#include "pq_hal_comm.h"
#include "drv_pq_ext.h"
#include "pq_hal_hdr.h"
#include "pq_mng_hdr_alg.h"

static PQ_PARAM_S *sg_pstHdrBinPara = HI_NULL;
static PQ_HDR_ALG_TM sg_stHdrCfg;
static HI_PQ_HDR_MODE_E sg_enHDRMode = HI_PQ_HDR_MODE_HDR10_TO_SDR;
static HI_S16 sg_aSMLutI[HI_PQ_HDR_MODE_BUTT][PQ_HAL_HDR_TM_LUT_SIZE];

static const HI_S16 as16HLG2SDRTMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       260 ,       264 ,       268 ,       273 ,       277 ,       282 ,       287 ,
    292 ,       297 ,       302 ,       307 ,       312 ,       317 ,       322 ,       327 ,
    332 ,       337 ,       343 ,       348 ,       353 ,       358 ,       364 ,       369 ,
    375 ,       380 ,       385 ,       391 ,       396 ,       402 ,       407 ,       413 ,
    418 ,       424 ,       429 ,       435 ,       440 ,       446 ,       452 ,       457 ,
    463 ,       469 ,       474 ,       480 ,       486 ,       491 ,       497 ,       503 ,
    508 ,       514 ,       520 ,       526 ,       531 ,       537 ,       543 ,       549 ,
    555 ,       560 ,       566 ,       572 ,       578 ,       584 ,       590 ,       595 ,
    601 ,       607 ,       613 ,       619 ,       625 ,       631 ,       637 ,       642 ,
    648 ,       654 ,       660 ,       666 ,       672 ,       678 ,       684 ,       690 ,
    696 ,       702 ,       708 ,       714 ,       720 ,       726 ,       732 ,       738 ,
    744 ,       750 ,       756 ,       762 ,       768 ,       774 ,       780 ,       786 ,
    792 ,       798 ,       804 ,       810 ,       816 ,       823 ,       829 ,       835 ,
    841 ,       847 ,       853 ,       859 ,       865 ,       871 ,       877 ,       883 ,
    890 ,       896 ,       902 ,       908 ,       914 ,       920 ,       926 ,       932 ,
    938 ,       945 ,       951 ,       957 ,       963 ,       969 ,       975 ,       981 ,
    988 ,       994 ,       1000 ,      1006 ,      1012 ,      1018 ,      1025 ,      1031 ,
    1037 ,      1043 ,      1049 ,      1055 ,      1062 ,      1068 ,      1074 ,      1080 ,
    1086 ,      1092 ,      1099 ,      1105 ,      1111 ,      1117 ,      1123 ,      1129 ,
    1136 ,      1142 ,      1148 ,      1154 ,      1160 ,      1167 ,      1173 ,      1179 ,
    1185 ,      1191 ,      1197 ,      1204 ,      1210 ,      1216 ,      1222 ,      1228 ,
    1235 ,      1241 ,      1247 ,      1253 ,      1259 ,      1265 ,      1272 ,      1278 ,
    1284 ,      1290 ,      1296 ,      1303 ,      1309 ,      1315 ,      1321 ,      1327 ,
    1333 ,      1340 ,      1346 ,      1352 ,      1358 ,      1364 ,      1371 ,      1377 ,
    1383 ,      1389 ,      1395 ,      1401 ,      1408 ,      1414 ,      1420 ,      1426 ,
    1432 ,      1438 ,      1444 ,      1451 ,      1457 ,      1463 ,      1469 ,      1475 ,
    1481 ,      1488 ,      1494 ,      1500 ,      1506 ,      1512 ,      1518 ,      1524 ,
    1530 ,      1537 ,      1543 ,      1549 ,      1555 ,      1561 ,      1567 ,      1574 ,
    1580 ,      1586 ,      1593 ,      1599 ,      1606 ,      1612 ,      1619 ,      1626 ,
    1632 ,      1639 ,      1646 ,      1653 ,      1660 ,      1667 ,      1674 ,      1681 ,
    1688 ,      1695 ,      1703 ,      1710 ,      1717 ,      1725 ,      1732 ,      1740 ,
    1747 ,      1755 ,      1762 ,      1770 ,      1778 ,      1786 ,      1794 ,      1801 ,
    1809 ,      1818 ,      1826 ,      1834 ,      1842 ,      1850 ,      1858 ,      1867 ,
    1875 ,      1884 ,      1892 ,      1901 ,      1909 ,      1918 ,      1927 ,      1936 ,
    1945 ,      1953 ,      1962 ,      1971 ,      1980 ,      1990 ,      1999 ,      2008 ,
    2017 ,      2027 ,      2036 ,      2046 ,      2055 ,      2065 ,      2074 ,      2084 ,
    2094 ,      2103 ,      2113 ,      2123 ,      2133 ,      2143 ,      2153 ,      2163 ,
    2173 ,      2183 ,      2194 ,      2204 ,      2214 ,      2225 ,      2235 ,      2246 ,
    2256 ,      2267 ,      2278 ,      2288 ,      2299 ,      2310 ,      2321 ,      2332 ,
    2343 ,      2354 ,      2365 ,      2376 ,      2387 ,      2398 ,      2409 ,      2420 ,
    2432 ,      2443 ,      2455 ,      2466 ,      2477 ,      2489 ,      2501 ,      2512 ,
    2524 ,      2536 ,      2547 ,      2559 ,      2571 ,      2583 ,      2594 ,      2606 ,
    2618 ,      2630 ,      2642 ,      2654 ,      2666 ,      2678 ,      2691 ,      2703 ,
    2715 ,      2727 ,      2739 ,      2752 ,      2764 ,      2776 ,      2788 ,      2801 ,
    2813 ,      2825 ,      2838 ,      2850 ,      2862 ,      2875 ,      2887 ,      2900 ,
    2912 ,      2925 ,      2937 ,      2949 ,      2962 ,      2974 ,      2987 ,      2999 ,
    3012 ,      3024 ,      3036 ,      3049 ,      3061 ,      3074 ,      3086 ,      3098 ,
    3111 ,      3123 ,      3135 ,      3147 ,      3160 ,      3172 ,      3184 ,      3196 ,
    3208 ,      3220 ,      3232 ,      3244 ,      3256 ,      3268 ,      3280 ,      3292 ,
    3304 ,      3315 ,      3327 ,      3339 ,      3350 ,      3362 ,      3373 ,      3385 ,
    3396 ,      3407 ,      3418 ,      3430 ,      3441 ,      3452 ,      3463 ,      3473 ,
    3484 ,      3495 ,      3505 ,      3516 ,      3526 ,      3537 ,      3547 ,      3557 ,
    3567 ,      3577 ,      3587 ,      3596 ,      3606 ,      3616 ,      3625 ,      3634 ,
    3643 ,      3653 ,      3662 ,      3670 ,      3679 ,      3688 ,      3696 ,      3705 ,
    3713 ,      3721 ,      3729 ,      3737 ,      3745 ,      3752 ,      3754 ,      3756 ,
    3758 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
};

static const HI_S16 as16HLG2SDRTMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

static const HI_S16 as16HLG2SDRSMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    2663 ,      2662 ,      2662 ,      2662 ,      2661 ,      2661 ,      2661 ,      2661 ,
    2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2660 ,
    2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2660 ,      2661 ,
    2661 ,      2661 ,      2661 ,      2661 ,      2661 ,      2662 ,      2662 ,      2662 ,
    2662 ,      2663 ,      2663 ,      2663 ,      2663 ,      2664 ,      2664 ,      2664 ,
    2665 ,      2665 ,      2665 ,      2666 ,      2666 ,      2666 ,      2666 ,      2667 ,
    2667 ,      2667 ,      2668 ,      2668 ,      2668 ,      2669 ,      2669 ,      2669 ,
    2669 ,      2669 ,      2670 ,      2670 ,      2670 ,      2670 ,      2670 ,      2671 ,
    2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2671 ,
    2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2671 ,      2670 ,
    2670 ,      2670 ,      2670 ,      2669 ,      2669 ,      2669 ,      2668 ,      2668 ,
    2667 ,      2667 ,      2666 ,      2666 ,      2665 ,      2665 ,      2664 ,      2663 ,
    2662 ,      2662 ,      2661 ,      2660 ,      2659 ,      2658 ,      2657 ,      2656 ,
    2655 ,      2655 ,      2654 ,      2653 ,      2652 ,      2652 ,      2651 ,      2651 ,
    2650 ,      2650 ,      2650 ,      2650 ,      2650 ,      2650 ,      2650 ,      2651 ,
    2651 ,      2652 ,      2653 ,      2654 ,      2655 ,      2657 ,      2658 ,      2660 ,
    2662 ,      2665 ,      2667 ,      2670 ,      2673 ,      2676 ,      2680 ,      2683 ,
    2687 ,      2691 ,      2696 ,      2700 ,      2705 ,      2709 ,      2714 ,      2719 ,
    2725 ,      2730 ,      2736 ,      2741 ,      2747 ,      2753 ,      2759 ,      2765 ,
    2772 ,      2778 ,      2785 ,      2792 ,      2798 ,      2805 ,      2812 ,      2819 ,
    2826 ,      2834 ,      2841 ,      2848 ,      2856 ,      2863 ,      2871 ,      2879 ,
    2886 ,      2894 ,      2902 ,      2909 ,      2917 ,      2925 ,      2933 ,      2941 ,
    2949 ,      2957 ,      2964 ,      2972 ,      2980 ,      2988 ,      2996 ,      3004 ,
    3011 ,      3019 ,      3027 ,      3035 ,      3042 ,      3050 ,      3057 ,      3065 ,
    3072 ,      3079 ,      3087 ,      3094 ,      3101 ,      3108 ,      3115 ,      3122 ,
    3129 ,      3135 ,      3142 ,      3149 ,      3155 ,      3162 ,      3169 ,      3175 ,
    3182 ,      3188 ,      3194 ,      3201 ,      3207 ,      3213 ,      3220 ,      3226 ,
    3232 ,      3238 ,      3244 ,      3250 ,      3257 ,      3263 ,      3269 ,      3275 ,
    3281 ,      3287 ,      3293 ,      3299 ,      3305 ,      3311 ,      3317 ,      3323 ,
    3329 ,      3335 ,      3341 ,      3348 ,      3354 ,      3360 ,      3366 ,      3372 ,
    3378 ,      3384 ,      3391 ,      3397 ,      3403 ,      3410 ,      3416 ,      3422 ,
    3429 ,      3435 ,      3442 ,      3448 ,      3455 ,      3461 ,      3468 ,      3475 ,
    3482 ,      3488 ,      3495 ,      3502 ,      3509 ,      3516 ,      3524 ,      3531 ,
    3538 ,      3546 ,      3553 ,      3561 ,      3569 ,      3576 ,      3584 ,      3592 ,
    3600 ,      3609 ,      3617 ,      3626 ,      3634 ,      3643 ,      3652 ,      3661 ,
    3670 ,      3680 ,      3689 ,      3699 ,      3709 ,      3719 ,      3729 ,      3739 ,
    3750 ,      3760 ,      3771 ,      3782 ,      3794 ,      3805 ,      3817 ,      3829 ,
    3841 ,      3853 ,      3866 ,      3878 ,      3891 ,      3904 ,      3918 ,      3931 ,
    3945 ,      3959 ,      3973 ,      3987 ,      4002 ,      4016 ,      4031 ,      4045 ,
    4060 ,      4075 ,      4090 ,      4104 ,      4119 ,      4134 ,      4149 ,      4163 ,
    4178 ,      4192 ,      4207 ,      4221 ,      4236 ,      4250 ,      4264 ,      4278 ,
    4292 ,      4306 ,      4320 ,      4333 ,      4347 ,      4360 ,      4374 ,      4387 ,
    4400 ,      4414 ,      4427 ,      4440 ,      4453 ,      4465 ,      4478 ,      4491 ,
    4503 ,      4516 ,      4528 ,      4540 ,      4552 ,      4564 ,      4576 ,      4588 ,
    4600 ,      4611 ,      4623 ,      4634 ,      4645 ,      4657 ,      4668 ,      4679 ,
    4689 ,      4700 ,      4711 ,      4721 ,      4732 ,      4742 ,      4752 ,      4762 ,
    4772 ,      4782 ,      4792 ,      4801 ,      4811 ,      4820 ,      4830 ,      4839 ,
    4848 ,      4857 ,      4865 ,      4874 ,      4882 ,      4891 ,      4899 ,      4907 ,
    4915 ,      4923 ,      4931 ,      4939 ,      4946 ,      4954 ,      4961 ,      4969 ,
    4976 ,      4983 ,      4991 ,      4998 ,      5006 ,      5013 ,      5021 ,      5029 ,
    5037 ,      5045 ,      5053 ,      5061 ,      5070 ,      5078 ,      5087 ,      5096 ,
    5106 ,      5115 ,      5125 ,      5135 ,      5146 ,      5157 ,      5168 ,      5179 ,
    5191 ,      5204 ,      5216 ,      5229 ,      5243 ,      5257 ,      5271 ,      5286 ,
    5301 ,      5316 ,      5331 ,      5347 ,      5362 ,      5378 ,      5393 ,      5408 ,
    5423 ,      5438 ,      5453 ,      5467 ,      5480 ,      5494 ,      5506 ,      5518 ,
    5530 ,      5540 ,      5550 ,      5560 ,      5569 ,      5578 ,      5586 ,      5594 ,
    5603 ,      5611 ,      5620 ,      5628 ,      5637 ,      5647 ,      5657 ,      5668 ,
    5679 ,      5692 ,      5705 ,      5719 ,      5734 ,      5751 ,      5769 ,      5787 ,
    5807 ,      5828 ,      5849 ,      5871 ,      5893 ,      5916 ,      5939 ,      5963 ,
    5986 ,      6009 ,      6032 ,      6054 ,      6075 ,      6095 ,      6113 ,      6129 ,
    6144 ,      6156 ,      6167 ,      6175 ,      6182 ,      6187 ,      6190 ,      6192 ,
    6193 ,      6192 ,      6191 ,      6188 ,      6185 ,      6181 ,      6176 ,      6171 ,
    6166 ,      6160 ,      6155 ,      6149 ,      6144 ,      6139 ,      6135 ,      6131 ,
    6128 ,      6125 ,      6124 ,      6124 ,      6125 ,      6127 ,      6131 ,      6137 ,
};

static const HI_S16 as16HLG2SDRSMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

/* HLG to HDR10 */
static const HI_S16 as16Hlg2HDR10TMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       263 ,       273 ,       286 ,       299 ,       313 ,       328 ,       342 ,
    357 ,       371 ,       385 ,       400 ,       414 ,       428 ,       442 ,       456 ,
    470 ,       483 ,       497 ,       510 ,       523 ,       536 ,       549 ,       561 ,
    574 ,       586 ,       598 ,       610 ,       622 ,       634 ,       645 ,       657 ,
    668 ,       679 ,       690 ,       701 ,       712 ,       723 ,       733 ,       744 ,
    754 ,       765 ,       775 ,       785 ,       795 ,       805 ,       814 ,       824 ,
    834 ,       843 ,       853 ,       862 ,       871 ,       880 ,       889 ,       898 ,
    907 ,       916 ,       925 ,       933 ,       942 ,       950 ,       959 ,       967 ,
    976 ,       984 ,       992 ,       1000 ,      1008 ,      1016 ,      1024 ,      1032 ,
    1040 ,      1047 ,      1055 ,      1063 ,      1070 ,      1078 ,      1085 ,      1092 ,
    1100 ,      1107 ,      1114 ,      1121 ,      1129 ,      1136 ,      1143 ,      1150 ,
    1157 ,      1163 ,      1170 ,      1177 ,      1184 ,      1191 ,      1197 ,      1204 ,
    1210 ,      1217 ,      1223 ,      1230 ,      1236 ,      1243 ,      1249 ,      1255 ,
    1261 ,      1268 ,      1274 ,      1280 ,      1286 ,      1292 ,      1298 ,      1304 ,
    1310 ,      1316 ,      1322 ,      1328 ,      1333 ,      1339 ,      1345 ,      1351 ,
    1356 ,      1362 ,      1368 ,      1373 ,      1379 ,      1384 ,      1390 ,      1395 ,
    1401 ,      1406 ,      1412 ,      1417 ,      1422 ,      1428 ,      1433 ,      1438 ,
    1443 ,      1448 ,      1454 ,      1459 ,      1464 ,      1469 ,      1474 ,      1479 ,
    1484 ,      1489 ,      1494 ,      1499 ,      1504 ,      1509 ,      1514 ,      1518 ,
    1523 ,      1528 ,      1533 ,      1538 ,      1542 ,      1547 ,      1552 ,      1556 ,
    1561 ,      1566 ,      1570 ,      1575 ,      1579 ,      1584 ,      1588 ,      1593 ,
    1597 ,      1602 ,      1606 ,      1611 ,      1615 ,      1620 ,      1624 ,      1628 ,
    1633 ,      1637 ,      1641 ,      1646 ,      1650 ,      1654 ,      1658 ,      1662 ,
    1667 ,      1671 ,      1675 ,      1679 ,      1683 ,      1687 ,      1691 ,      1696 ,
    1700 ,      1704 ,      1708 ,      1712 ,      1716 ,      1720 ,      1724 ,      1728 ,
    1731 ,      1735 ,      1739 ,      1743 ,      1747 ,      1751 ,      1755 ,      1759 ,
    1762 ,      1766 ,      1770 ,      1774 ,      1777 ,      1781 ,      1785 ,      1789 ,
    1792 ,      1796 ,      1800 ,      1803 ,      1807 ,      1811 ,      1814 ,      1818 ,
    1822 ,      1826 ,      1829 ,      1833 ,      1837 ,      1841 ,      1845 ,      1848 ,
    1852 ,      1856 ,      1860 ,      1864 ,      1868 ,      1872 ,      1876 ,      1880 ,
    1884 ,      1888 ,      1892 ,      1896 ,      1900 ,      1904 ,      1908 ,      1912 ,
    1916 ,      1920 ,      1924 ,      1929 ,      1933 ,      1937 ,      1941 ,      1945 ,
    1950 ,      1954 ,      1958 ,      1962 ,      1967 ,      1971 ,      1975 ,      1980 ,
    1984 ,      1988 ,      1993 ,      1997 ,      2002 ,      2006 ,      2010 ,      2015 ,
    2019 ,      2024 ,      2028 ,      2033 ,      2037 ,      2042 ,      2046 ,      2051 ,
    2056 ,      2060 ,      2065 ,      2069 ,      2074 ,      2079 ,      2083 ,      2088 ,
    2092 ,      2097 ,      2102 ,      2107 ,      2111 ,      2116 ,      2121 ,      2126 ,
    2130 ,      2135 ,      2140 ,      2145 ,      2149 ,      2154 ,      2159 ,      2164 ,
    2169 ,      2174 ,      2179 ,      2183 ,      2188 ,      2193 ,      2198 ,      2203 ,
    2208 ,      2213 ,      2218 ,      2223 ,      2228 ,      2233 ,      2238 ,      2243 ,
    2248 ,      2253 ,      2258 ,      2263 ,      2268 ,      2273 ,      2278 ,      2283 ,
    2288 ,      2294 ,      2299 ,      2304 ,      2309 ,      2314 ,      2319 ,      2324 ,
    2330 ,      2335 ,      2340 ,      2345 ,      2350 ,      2356 ,      2361 ,      2366 ,
    2371 ,      2376 ,      2382 ,      2387 ,      2392 ,      2398 ,      2403 ,      2408 ,
    2413 ,      2419 ,      2424 ,      2429 ,      2435 ,      2440 ,      2445 ,      2451 ,
    2456 ,      2461 ,      2467 ,      2472 ,      2478 ,      2483 ,      2488 ,      2494 ,
    2499 ,      2505 ,      2510 ,      2516 ,      2521 ,      2526 ,      2532 ,      2537 ,
    2543 ,      2548 ,      2554 ,      2559 ,      2565 ,      2570 ,      2576 ,      2581 ,
    2587 ,      2592 ,      2598 ,      2603 ,      2609 ,      2614 ,      2620 ,      2625 ,
    2631 ,      2636 ,      2642 ,      2648 ,      2653 ,      2659 ,      2664 ,      2670 ,
    2675 ,      2681 ,      2687 ,      2692 ,      2698 ,      2703 ,      2709 ,      2715 ,
    2720 ,      2726 ,      2732 ,      2737 ,      2743 ,      2748 ,      2754 ,      2760 ,
    2765 ,      2771 ,      2777 ,      2782 ,      2788 ,      2794 ,      2799 ,      2805 ,
    2811 ,      2816 ,      2822 ,      2828 ,      2833 ,      2839 ,      2845 ,      2850 ,
    2856 ,      2862 ,      2868 ,      2873 ,      2879 ,      2885 ,      2890 ,      2890 ,
    2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,
    2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,
    2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,
    2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,
    2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,      2890 ,
};

static const HI_S16 as16Hlg2HDR10TMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

static const HI_S16 as16Hlg2HDR10SMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
    2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,      2048 ,
};

static const HI_S16 as16Hlg2HDR10SMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

static const HI_S16 as16Sdr2HDR10TMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    62  , 62  , 62  , 62  , 62  , 62  , 62  , 62  , 69  , 91  , 107 , 121 , 134 , 146 , 158 , 169 ,
    181 , 192 , 202 , 213 , 223 , 234 , 244 , 254 , 264 , 274 , 284 , 294 , 304 , 314 , 324 , 334 ,
    343 , 353 , 363 , 372 , 382 , 391 , 401 , 410 , 420 , 429 , 438 , 448 , 457 , 466 , 476 , 485 ,
    494 , 504 , 513 , 522 , 531 , 540 , 549 , 559 , 568 , 577 , 586 , 595 , 604 , 613 , 622 , 631 ,
    640 , 649 , 658 , 667 , 676 , 685 , 694 , 703 , 712 , 721 , 730 , 739 , 748 , 757 , 766 , 775 ,
    784 , 792 , 801 , 810 , 819 , 828 , 837 , 846 , 855 , 864 , 873 , 881 , 890 , 899 , 908 , 917 ,
    926 , 935 , 944 , 953 , 961 , 970 , 979 , 988 , 997 , 1006, 1015, 1024, 1033, 1042, 1051, 1060,
    1069, 1078, 1087, 1096, 1105, 1114, 1123, 1132, 1141, 1150, 1159, 1168, 1177, 1186, 1196, 1205,
    1214, 1223, 1232, 1242, 1251, 1260, 1269, 1279, 1288, 1297, 1307, 1316, 1325, 1335, 1344, 1354,
    1363, 1373, 1382, 1392, 1402, 1411, 1421, 1431, 1440, 1450, 1460, 1470, 1479, 1489, 1499, 1509,
    1519, 1529, 1539, 1549, 1560, 1570, 1580, 1590, 1601, 1611, 1621, 1632, 1642, 1653, 1663, 1674,
    1685, 1696, 1706, 1717, 1728, 1739, 1750, 1761, 1773, 1784, 1795, 1807, 1818, 1830, 1841, 1853,
    1865, 1877, 1889, 1901, 1913, 1925, 1937, 1949, 1962, 1975, 1987, 2000, 2013, 2026, 2039, 2052,
    2065, 2079, 2093, 2106, 2120, 2134, 2148, 2162, 2177, 2191, 2206, 2221, 2236, 2251, 2267, 2282,
    2298, 2314, 2330, 2347, 2363, 2380, 2397, 2414, 2432, 2450, 2468, 2486, 2505, 2524, 2543, 2562,
    2582, 2602, 2623, 2644, 2665, 2687, 2709, 2732, 2755, 2778, 2802, 2827, 2852, 2878, 2904, 2931,
    2962, 2991, 3020, 3050, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
    3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079, 3079,
};

static const HI_S16 as16Sdr2HDR10TMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4095, 4134, 4173, 4212, 4251, 4290, 4329, 4368, 4407, 4446, 4485, 4524, 4563, 4602, 4641, 4680,
    4719, 4758, 4797, 4836, 4875, 4914, 4953, 4992, 5031, 5070, 5109, 5148, 5187, 5226, 5265, 5304,
    5343, 5381, 5420, 5459, 5498, 5537, 5576, 5615, 5654, 5693, 5732, 5771, 5810, 5849, 5888, 5927,
    5966, 6005, 6044, 6083, 6122, 6161, 6200, 6239, 6278, 6317, 6356, 6395, 6434, 6473, 6512, 6551,
    6590, 6629, 6668, 6707, 6746, 6785, 6824, 6863, 6902, 6941, 6980, 7019, 7058, 7097, 7136, 7175,
    7214, 7253, 7292, 7331, 7370, 7409, 7448, 7487, 7526, 7565, 7604, 7643, 7682, 7721, 7760, 7799,
    7838, 7876, 7915, 7954, 7993, 8032, 8071, 8110, 8149, 8188, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
};

static const HI_S16 as16Sdr2HDR10SMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4781, 4772, 4762, 4753, 4744, 4735, 4726, 4716, 4715, 4731, 4741, 4747, 4753, 4758, 4762, 4766,
    4770, 4774, 4776, 4780, 4782, 4787, 4789, 4791, 4793, 4796, 4798, 4800, 4803, 4805, 4807, 4810,
    4811, 4813, 4816, 4818, 4820, 4821, 4823, 4824, 4827, 4828, 4829, 4831, 4833, 4834, 4836, 4837,
    4839, 4842, 4843, 4844, 4845, 4846, 4847, 4850, 4851, 4852, 4853, 4854, 4856, 4857, 4858, 4860,
    4861, 4862, 4864, 4865, 4866, 4867, 4868, 4869, 4870, 4872, 4873, 4874, 4875, 4877, 4879, 4880,
    4881, 4881, 4882, 4883, 4884, 4885, 4887, 4888, 4889, 4890, 4891, 4891, 4893, 4895, 4896, 4897,
    4898, 4899, 4900, 4902, 4902, 4903, 4904, 4905, 4906, 4908, 4910, 4911, 4912, 4913, 4914, 4915,
    4916, 4918, 4919, 4920, 4921, 4923, 4925, 4926, 4927, 4928, 4929, 4930, 4931, 4933, 4936, 4937,
    4938, 4939, 4941, 4943, 4944, 4945, 4946, 4950, 4951, 4952, 4954, 4956, 4957, 4960, 4961, 4964,
    4965, 4967, 4968, 4972, 4974, 4975, 4977, 4980, 4981, 4984, 4987, 4989, 4990, 4994, 4996, 4998,
    5000, 5004, 5006, 5008, 5012, 5015, 5018, 5020, 5025, 5027, 5029, 5034, 5036, 5040, 5043, 5046,
    5051, 5054, 5057, 5061, 5065, 5069, 5073, 5077, 5082, 5087, 5090, 5096, 5100, 5105, 5110, 5115,
    5120, 5126, 5132, 5136, 5142, 5148, 5153, 5159, 5166, 5173, 5178, 5186, 5192, 5199, 5206, 5213,
    5220, 5228, 5237, 5244, 5252, 5261, 5270, 5279, 5289, 5297, 5307, 5318, 5328, 5338, 5350, 5360,
    5373, 5384, 5397, 5411, 5422, 5436, 5450, 5464, 5480, 5495, 5511, 5527, 5544, 5562, 5580, 5597,
    5617, 5636, 5658, 5680, 5702, 5725, 5749, 5775, 5801, 5827, 5856, 5886, 5917, 5949, 5982, 6018,
    6062, 6102, 6143, 6186, 6229, 6212, 6196, 6180, 6164, 6149, 6133, 6118, 6102, 6087, 6071, 6056,
    6041, 6026, 6011, 5996, 5981, 5966, 5951, 5936, 5923, 5908, 5893, 5879, 5865, 5850, 5836, 5823,
    5808, 5794, 5780, 5766, 5752, 5739, 5725, 5712, 5698, 5685, 5672, 3001, 2997, 2994, 2990, 2986,
    2982, 2979, 2975, 2972, 2967, 2964, 2960, 2957, 2954, 2950, 2946, 2942, 2939, 2935, 2932, 2928,
    2925, 2921, 2918, 2915, 2911, 2906, 2903, 2900, 2896, 2893, 2889, 2886, 2882, 2879, 2875, 2872,
    2869, 2865, 2862, 2858, 2856, 2852, 2849, 2846, 2842, 2839, 2835, 2832, 2828, 2825, 2821, 2819,
    2816, 2812, 2809, 2805, 2802, 2800, 2796, 2793, 2789, 2786, 2782, 2780, 2777, 2773, 2770, 2767,
    2764, 2760, 2757, 2755, 2751, 2748, 2744, 2742, 2739, 2735, 2733, 2729, 2726, 2722, 2720, 2717,
    2713, 2711, 2708, 2705, 2702, 2698, 2696, 2693, 2689, 2687, 2683, 2681, 2678, 2674, 2672, 2668,
    2666, 2663, 2660, 2657, 2655, 2651, 2648, 2645, 2642, 2640, 2636, 2634, 2630, 2628, 2625, 2622,
    2619, 2617, 2613, 2611, 2609, 2605, 2603, 2599, 2597, 2594, 2591, 2588, 2586, 2583, 2580, 2578,
    2574, 2572, 2570, 2566, 2564, 2561, 2558, 2556, 2552, 2550, 2548, 2544, 2542, 2540, 2536, 2534,
    2532, 2529, 2526, 2524, 2521, 2518, 2515, 2513, 2510, 2507, 2505, 2503, 2499, 2497, 2495, 2492,
    2489, 2487, 2484, 2482, 2480, 2476, 2474, 2472, 2469, 2466, 2464, 2461, 2459, 2457, 2455, 2451,
    2449, 2446, 2444, 2442, 2440, 2436, 2434, 2432, 2429, 2427, 2425, 2422, 2420, 2417, 2414, 2412,
    2410, 2407, 2405, 2403, 2400, 2398, 2396, 2394, 2390, 2388, 2386, 2383, 2381, 2379, 2376, 2374,
};

static const HI_S16 as16Sdr2HDR10SMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4095, 4107, 4118, 4130, 4142, 4153, 4165, 4177, 4189, 4200, 4212, 4224, 4235, 4247, 4259, 4270,
    4282, 4294, 4306, 4317, 4329, 4341, 4352, 4364, 4376, 4387, 4399, 4411, 4422, 4434, 4446, 4458,
    4469, 4481, 4493, 4504, 4516, 4528, 4539, 4551, 4563, 4575, 4586, 4598, 4610, 4621, 4633, 4645,
    4656, 4668, 4680, 4691, 4703, 4715, 4727, 4738, 4750, 4762, 4773, 4785, 4797, 4808, 4820, 4832,
    4844, 4855, 4867, 4879, 4890, 4902, 4914, 4925, 4937, 4949, 4960, 4972, 4984, 4996, 5007, 5019,
    5031, 5042, 5054, 5066, 5077, 5089, 5101, 5112, 5124, 5136, 5148, 5159, 5171, 5183, 5194, 5206,
    5218, 5229, 5241, 5253, 5265, 5276, 5288, 5300, 5311, 5323, 5335, 5346, 5358, 5370, 5381, 5393,
    5405, 5417, 5428, 5440, 5452, 5463, 5475, 5487, 5498, 5510, 5522, 5534, 5545, 5557, 5569, 5580,
    5592, 5604, 5615, 5627, 5639, 5650, 5662, 5674, 5686, 5697, 5709, 5721, 5732, 5744, 5756, 5767,
    5779, 5791, 5803, 5814, 5826, 5838, 5849, 5861, 5873, 5884, 5896, 5908, 5919, 5931, 5943, 5955,
    5966, 5978, 5990, 6001, 6013, 6025, 6036, 6048, 6060, 6072, 6083, 6095, 6107, 6118, 6130, 6142,
    6153, 6165, 6177, 6188, 6200, 6212, 6224, 6235, 6247, 6259, 6270, 6282, 6294, 6305, 6317, 6329,
    6341, 6352, 6364, 6376, 6387, 6399, 6411, 6422, 6434, 6446, 6457, 6469, 6481, 6493, 6504, 6516,
    6528, 6539, 6551, 6563, 6574, 6586, 6598, 6609, 6621, 6633, 6645, 6656, 6668, 6680, 6691, 6703,
    6715, 6726, 6738, 6750, 6762, 6773, 6785, 6797, 6808, 6820, 6832, 6843, 6855, 6867, 6878, 6890,
    6902, 6914, 6925, 6937, 6949, 6960, 6972, 6984, 6995, 7007, 7019, 7031, 7042, 7054, 7066, 7077,
    7089, 7101, 7112, 7124, 7136, 7147, 7159, 7171, 7183, 7194, 7206, 7218, 7229, 7241, 7253, 7264,
    7276, 7288, 7300, 7311, 7323, 7335, 7346, 7358, 7370, 7381, 7393, 7405, 7416, 7428, 7440, 7452,
    7463, 7475, 7487, 7498, 7510, 7522, 7533, 7545, 7557, 7569, 7580, 7592, 7604, 7615, 7627, 7639,
    7650, 7662, 7674, 7685, 7697, 7709, 7721, 7732, 7744, 7756, 7767, 7779, 7791, 7802, 7814, 7826,
    7838, 7849, 7861, 7873, 7884, 7896, 7908, 7919, 7931, 7943, 7954, 7966, 7978, 7990, 8001, 8013,
    8025, 8036, 8048, 8060, 8071, 8083, 8095, 8106, 8118, 8130, 8142, 8153, 8165, 8177, 8188, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
    8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191, 8191,
};

//0424
static const HI_S16 as16HDR2HLGTMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,       256 ,
    265 ,       271 ,       276 ,       281 ,       286 ,       291 ,       295 ,       300 ,
    304 ,       309 ,       313 ,       318 ,       322 ,       326 ,       331 ,       335 ,
    340 ,       344 ,       349 ,       353 ,       358 ,       362 ,       367 ,       371 ,
    376 ,       381 ,       385 ,       390 ,       395 ,       400 ,       404 ,       409 ,
    414 ,       419 ,       424 ,       429 ,       434 ,       439 ,       444 ,       450 ,
    455 ,       460 ,       465 ,       471 ,       476 ,       481 ,       487 ,       492 ,
    498 ,       504 ,       509 ,       515 ,       521 ,       526 ,       532 ,       538 ,
    544 ,       550 ,       556 ,       562 ,       568 ,       574 ,       580 ,       587 ,
    593 ,       599 ,       606 ,       612 ,       619 ,       625 ,       632 ,       639 ,
    645 ,       652 ,       659 ,       666 ,       673 ,       680 ,       687 ,       694 ,
    701 ,       708 ,       716 ,       723 ,       730 ,       738 ,       745 ,       753 ,
    761 ,       768 ,       776 ,       784 ,       792 ,       800 ,       808 ,       816 ,
    824 ,       832 ,       841 ,       849 ,       857 ,       866 ,       875 ,       883 ,
    892 ,       901 ,       909 ,       918 ,       927 ,       936 ,       946 ,       955 ,
    964 ,       973 ,       983 ,       992 ,      1002 ,      1011 ,      1021 ,      1031 ,
    1041 ,      1051 ,      1061 ,      1071 ,      1081 ,      1091 ,      1102 ,      1112 ,
    1123 ,      1133 ,      1144 ,      1155 ,      1166 ,      1177 ,      1188 ,      1199 ,
    1210 ,      1221 ,      1233 ,      1244 ,      1256 ,      1267 ,      1279 ,      1291 ,
    1303 ,      1315 ,      1327 ,      1339 ,      1351 ,      1364 ,      1376 ,      1389 ,
    1402 ,      1414 ,      1427 ,      1440 ,      1453 ,      1467 ,      1480 ,      1493 ,
    1507 ,      1520 ,      1534 ,      1548 ,      1562 ,      1576 ,      1590 ,      1605 ,
    1619 ,      1633 ,      1648 ,      1663 ,      1678 ,      1693 ,      1708 ,      1723 ,
    1738 ,      1754 ,      1769 ,      1785 ,      1801 ,      1817 ,      1833 ,      1849 ,
    1865 ,      1882 ,      1898 ,      1915 ,      1932 ,      1949 ,      1966 ,      1983 ,
    2001 ,      2018 ,      2035 ,      2053 ,      2070 ,      2086 ,      2103 ,      2120 ,
    2136 ,      2152 ,      2168 ,      2184 ,      2200 ,      2216 ,      2232 ,      2247 ,
    2263 ,      2278 ,      2293 ,      2308 ,      2323 ,      2338 ,      2353 ,      2368 ,
    2383 ,      2397 ,      2412 ,      2426 ,      2440 ,      2455 ,      2469 ,      2483 ,
    2497 ,      2511 ,      2525 ,      2539 ,      2552 ,      2566 ,      2580 ,      2593 ,
    2607 ,      2620 ,      2634 ,      2647 ,      2660 ,      2673 ,      2687 ,      2700 ,
    2713 ,      2726 ,      2739 ,      2752 ,      2765 ,      2778 ,      2791 ,      2803 ,
    2816 ,      2829 ,      2842 ,      2854 ,      2867 ,      2879 ,      2892 ,      2904 ,
    2917 ,      2929 ,      2942 ,      2954 ,      2966 ,      2979 ,      2991 ,      3003 ,
    3015 ,      3027 ,      3040 ,      3052 ,      3064 ,      3076 ,      3088 ,      3100 ,
    3112 ,      3124 ,      3136 ,      3148 ,      3160 ,      3172 ,      3183 ,      3195 ,
    3207 ,      3219 ,      3231 ,      3242 ,      3254 ,      3266 ,      3278 ,      3289 ,
    3301 ,      3313 ,      3324 ,      3336 ,      3347 ,      3359 ,      3371 ,      3382 ,
    3394 ,      3405 ,      3417 ,      3428 ,      3440 ,      3451 ,      3463 ,      3474 ,
    3485 ,      3497 ,      3508 ,      3520 ,      3531 ,      3542 ,      3554 ,      3565 ,
    3576 ,      3588 ,      3599 ,      3610 ,      3622 ,      3633 ,      3644 ,      3656 ,
    3667 ,      3678 ,      3689 ,      3701 ,      3712 ,      3723 ,      3734 ,      3745 ,
    3757 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
    3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,      3760 ,
};

static const HI_S16 as16HDR2HLGTMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

static const HI_S16 as16HDR2HLGSMLutI[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,
    1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,
    1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,
    1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,      1966 ,
    1966 ,      2094 ,      2216 ,      2332 ,      2441 ,      2545 ,      2643 ,      2735 ,
    2823 ,      2906 ,      2984 ,      3058 ,      3128 ,      3195 ,      3258 ,      3318 ,
    3374 ,      3429 ,      3480 ,      3530 ,      3577 ,      3623 ,      3668 ,      3712 ,
    3754 ,      3796 ,      3838 ,      3880 ,      3922 ,      3964 ,      4007 ,      4051 ,
    4096 ,      4143 ,      4191 ,      4240 ,      4290 ,      4341 ,      4393 ,      4445 ,
    4498 ,      4551 ,      4604 ,      4657 ,      4710 ,      4762 ,      4814 ,      4865 ,
    4915 ,      4965 ,      5013 ,      5060 ,      5107 ,      5152 ,      5197 ,      5240 ,
    5283 ,      5325 ,      5366 ,      5407 ,      5446 ,      5485 ,      5523 ,      5560 ,
    5596 ,      5632 ,      5667 ,      5701 ,      5734 ,      5767 ,      5800 ,      5831 ,
    5863 ,      5893 ,      5923 ,      5953 ,      5983 ,      6012 ,      6041 ,      6069 ,
    6097 ,      6126 ,      6154 ,      6181 ,      6209 ,      6237 ,      6265 ,      6293 ,
    6321 ,      6349 ,      6377 ,      6406 ,      6435 ,      6464 ,      6493 ,      6523 ,
    6554 ,      6584 ,      6616 ,      6647 ,      6680 ,      6712 ,      6746 ,      6780 ,
    6814 ,      6849 ,      6885 ,      6922 ,      6959 ,      6997 ,      7035 ,      7075 ,
    7115 ,      7156 ,      7197 ,      7240 ,      7283 ,      7328 ,      7373 ,      7419 ,
    7466 ,      7513 ,      7562 ,      7611 ,      7660 ,      7710 ,      7760 ,      7811 ,
    7862 ,      7913 ,      7964 ,      8015 ,      8066 ,      8117 ,      8168 ,      8218 ,
    8268 ,      8318 ,      8367 ,      8415 ,      8463 ,      8510 ,      8556 ,      8602 ,
    8646 ,      8689 ,      8732 ,      8773 ,      8814 ,      8853 ,      8892 ,      8929 ,
    8966 ,      9001 ,      9036 ,      9070 ,      9102 ,      9134 ,      9165 ,      9195 ,
    9224 ,      9252 ,      9279 ,      9305 ,      9330 ,      9354 ,      9377 ,      9399 ,
    9421 ,      9441 ,      9461 ,      9479 ,      9497 ,      9514 ,      9529 ,      9545 ,
    9559 ,      9572 ,      9585 ,      9597 ,      9608 ,      9618 ,      9628 ,      9637 ,
    9645 ,      9653 ,      9660 ,      9666 ,      9672 ,      9677 ,      9682 ,      9686 ,
    9690 ,      9692 ,      9695 ,      9697 ,      9698 ,      9700 ,      9700 ,      9700 ,
    9700 ,      9700 ,      9699 ,      9697 ,      9696 ,      9694 ,      9692 ,      9689 ,
    9686 ,      9683 ,      9680 ,      9677 ,      9673 ,      9669 ,      9665 ,      9661 ,
    9657 ,      9653 ,      9648 ,      9644 ,      9639 ,      9635 ,      9630 ,      9626 ,
    9621 ,      9617 ,      9612 ,      9607 ,      9603 ,      9598 ,      9594 ,      9589 ,
    9584 ,      9580 ,      9575 ,      9570 ,      9565 ,      9560 ,      9555 ,      9550 ,
    9545 ,      9539 ,      9534 ,      9528 ,      9522 ,      9516 ,      9510 ,      9504 ,
    9497 ,      9490 ,      9484 ,      9476 ,      9469 ,      9462 ,      9454 ,      9446 ,
    9438 ,      9429 ,      9421 ,      9412 ,      9403 ,      9393 ,      9383 ,      9373 ,
    9363 ,      9352 ,      9341 ,      9330 ,      9318 ,      9307 ,      9294 ,      9282 ,
    9269 ,      9256 ,      9242 ,      9228 ,      9214 ,      9199 ,      9184 ,      9168 ,
    9153 ,      9136 ,      9120 ,      9103 ,      9085 ,      9067 ,      9049 ,      9030 ,
    9011 ,      8992 ,      8972 ,      8951 ,      8931 ,      8910 ,      8889 ,      8868 ,
    8846 ,      8825 ,      8804 ,      8783 ,      8761 ,      8740 ,      8720 ,      8699 ,
    8679 ,      8659 ,      8639 ,      8620 ,      8602 ,      8584 ,      8566 ,      8549 ,
    8532 ,      8515 ,      8498 ,      8482 ,      8465 ,      8448 ,      8431 ,      8414 ,
    8396 ,      8378 ,      8359 ,      8340 ,      8320 ,      8299 ,      8277 ,      8254 ,
    8230 ,      8205 ,      8179 ,      8151 ,      8122 ,      8092 ,      8061 ,      8028 ,
    7995 ,      7960 ,      7925 ,      7888 ,      7850 ,      7812 ,      7773 ,      7732 ,
    7691 ,      7650 ,      7607 ,      7564 ,      7520 ,      7475 ,      7430 ,      7384 ,
    7338 ,      7291 ,      7244 ,      7196 ,      7148 ,      7100 ,      7051 ,      7002 ,
    6953 ,      6903 ,      6853 ,      6804 ,      6754 ,      6704 ,      6654 ,      6604 ,
    6554 ,      6504 ,      6454 ,      6404 ,      6354 ,      6305 ,      6255 ,      6206 ,
    6157 ,      6108 ,      6059 ,      6010 ,      5961 ,      5913 ,      5864 ,      5816 ,
    5768 ,      5721 ,      5673 ,      5626 ,      5579 ,      5532 ,      5485 ,      5439 ,
    5393 ,      5347 ,      5301 ,      5256 ,      5211 ,      5166 ,      5122 ,      5078 ,
    5034 ,      4990 ,      4947 ,      4905 ,      4862 ,      4820 ,      4778 ,      4737 ,
    4696 ,      4655 ,      4615 ,      4576 ,      4536 ,      4497 ,      4459 ,      4421 ,
    4383 ,      4346 ,      4310 ,      4273 ,      4238 ,      4202 ,      4168 ,      4133 ,
    4100 ,      4067 ,      4034 ,      4002 ,      3970 ,      3939 ,      3909 ,      3879 ,
    3850 ,      3821 ,      3793 ,      3765 ,      3738 ,      3712 ,      3686 ,      3661 ,
    3637 ,      3613 ,      3590 ,      3568 ,      3546 ,      3525 ,      3505 ,      3485 ,
    3466 ,      3448 ,      3430 ,      3413 ,      3397 ,      3382 ,      3368 ,      3354 ,
    3341 ,      3328 ,      3317 ,      3306 ,      3297 ,      3288 ,      3279 ,      3272 ,
    3265 ,      3260 ,      3255 ,      3251 ,      3248 ,      3245 ,      3244 ,      3244 ,
    3244 ,      3245 ,      3248 ,      3251 ,      3255 ,      3260 ,      3266 ,      3277 ,
};

static const HI_S16 as16HDR2HLGSMLutS[PQ_HAL_HDR_TM_LUT_SIZE] =
{
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
    4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,      4096 ,
};

static HI_S32 pq_hal_GetHDRDefaultCfg(PQ_HDR_ALG_TM *pstHdrDefaultCfg)
{
    PQ_CHECK_NULL_PTR_RE_FAIL(pstHdrDefaultCfg);
    /* HLG2SDR */
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2SDRTMLut[PQ_HAL_HDR_TM_TMLUTI], as16HLG2SDRTMLutI, sizeof(as16HLG2SDRTMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2SDRTMLut[PQ_HAL_HDR_TM_TMLUTS], as16HLG2SDRTMLutS, sizeof(as16HLG2SDRTMLutS));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI], as16HLG2SDRSMLutI, sizeof(as16HLG2SDRSMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2SDRTMLut[PQ_HAL_HDR_TM_SMLUTS], as16HLG2SDRSMLutS, sizeof(as16HLG2SDRSMLutS));
    /* HLG2HDR */
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2HDRTMLut[PQ_HAL_HDR_TM_TMLUTI], as16Hlg2HDR10TMLutI, sizeof(as16Hlg2HDR10TMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2HDRTMLut[PQ_HAL_HDR_TM_TMLUTS], as16Hlg2HDR10TMLutS, sizeof(as16Hlg2HDR10TMLutS));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2HDRTMLut[PQ_HAL_HDR_TM_SMLUTI], as16Hlg2HDR10SMLutI, sizeof(as16Hlg2HDR10SMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HLG2HDRTMLut[PQ_HAL_HDR_TM_SMLUTS], as16Hlg2HDR10SMLutS, sizeof(as16Hlg2HDR10SMLutS));
    /* SDR2HDR */
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16SDR2HDRTMLut[PQ_HAL_HDR_TM_TMLUTI], as16Sdr2HDR10TMLutI, sizeof(as16Sdr2HDR10TMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16SDR2HDRTMLut[PQ_HAL_HDR_TM_TMLUTS], as16Sdr2HDR10TMLutS, sizeof(as16Sdr2HDR10TMLutS));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16SDR2HDRTMLut[PQ_HAL_HDR_TM_SMLUTI], as16Sdr2HDR10SMLutI, sizeof(as16Sdr2HDR10SMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16SDR2HDRTMLut[PQ_HAL_HDR_TM_SMLUTS], as16Sdr2HDR10SMLutS, sizeof(as16Sdr2HDR10SMLutS));
    /* HDR2HLG */
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HDR2HLGTMLut[PQ_HAL_HDR_TM_TMLUTI], as16HDR2HLGTMLutI, sizeof(as16HDR2HLGTMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HDR2HLGTMLut[PQ_HAL_HDR_TM_TMLUTS], as16HDR2HLGTMLutS, sizeof(as16HDR2HLGTMLutS));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HDR2HLGTMLut[PQ_HAL_HDR_TM_SMLUTI], as16HDR2HLGSMLutI, sizeof(as16HDR2HLGSMLutI));
    PQ_SAFE_MEMCPY(pstHdrDefaultCfg->as16HDR2HLGTMLut[PQ_HAL_HDR_TM_SMLUTS], as16HDR2HLGSMLutS, sizeof(as16HDR2HLGSMLutS));

    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHDR2HDRCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);

    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHDR2SDRCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);
    PQ_SAFE_MEMCPY((HI_VOID *) & (pstPqHdrCfg->stPQHdrTm), (HI_VOID *)(sg_stHdrCfg.as16HDR2SDRTMLut), sizeof(pstPqHdrCfg->stPQHdrTm));
    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHDR2HLGCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);
    PQ_SAFE_MEMCPY((HI_VOID *) & (pstPqHdrCfg->stPQHdrTm), (HI_VOID *)(sg_stHdrCfg.as16HDR2HLGTMLut), sizeof(pstPqHdrCfg->stPQHdrTm));
    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHLG2SDRCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);
    PQ_SAFE_MEMCPY((HI_VOID *) & (pstPqHdrCfg->stPQHdrTm), (HI_VOID *)(sg_stHdrCfg.as16HLG2SDRTMLut), sizeof(pstPqHdrCfg->stPQHdrTm));
    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHLG2HDRCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);
    PQ_SAFE_MEMCPY((HI_VOID *) & (pstPqHdrCfg->stPQHdrTm), (HI_VOID *)(sg_stHdrCfg.as16HLG2HDRTMLut), sizeof(pstPqHdrCfg->stPQHdrTm));
    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetHLG2HLGCfg(HI_DRV_COLOR_SPACE_E enInCS, HI_DRV_COLOR_SPACE_E enOutCS, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_UNUSED(enInCS);
    HI_UNUSED(enOutCS);

    return HI_SUCCESS;
}

static HI_S32 pq_hal_GetSDR2HDRCfg(HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    PQ_SAFE_MEMCPY((HI_VOID *) & (pstPqHdrCfg->stPQHdrTm), (HI_VOID *)(sg_stHdrCfg.as16SDR2HDRTMLut), sizeof(pstPqHdrCfg->stPQHdrTm));
    return HI_SUCCESS;
}


HI_S32 PQ_HAL_GetHDRCfg(HI_PQ_XDR_FRAME_INFO *pstXdrFrameInfo, HI_PQ_HDR_CFG *pstPqHdrCfg)
{
    HI_S32 s32Ret = HI_FAILURE;

    PQ_CHECK_NULL_PTR_RE_FAIL(pstXdrFrameInfo);
    PQ_CHECK_NULL_PTR_RE_FAIL(pstPqHdrCfg);

    if ((HI_DRV_VIDEO_FRAME_TYPE_HDR10 == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_HDR10 == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HDR10_TO_HDR10;
        s32Ret       = pq_hal_GetHDR2HDRCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ((HI_DRV_VIDEO_FRAME_TYPE_HDR10 == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_NORMAL == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HDR10_TO_SDR;
        s32Ret       = pq_hal_GetHDR2SDRCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ((HI_DRV_VIDEO_FRAME_TYPE_HDR10 == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_HLG == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HDR10_TO_HLG;
        s32Ret       = pq_hal_GetHDR2HLGCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ((HI_DRV_VIDEO_FRAME_TYPE_HLG == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_NORMAL == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HLG_TO_SDR;
        s32Ret       = pq_hal_GetHLG2SDRCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ((HI_DRV_VIDEO_FRAME_TYPE_HLG == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_HDR10 == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HLG_TO_HDR10;
        s32Ret       = pq_hal_GetHLG2HDRCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ((HI_DRV_VIDEO_FRAME_TYPE_HLG == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_HLG == pstXdrFrameInfo->enDispType))
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_HLG_TO_HLG;
        s32Ret       = pq_hal_GetHLG2HLGCfg(pstXdrFrameInfo->enInCS, pstXdrFrameInfo->enOutCS, pstPqHdrCfg);
    }
    else if ( (HI_DRV_VIDEO_FRAME_TYPE_SDR == pstXdrFrameInfo->enSrcFrameType) && (HI_PQ_DISP_TYPE_HDR10 == pstXdrFrameInfo->enDispType) )
    {
        sg_enHDRMode = HI_PQ_HDR_MODE_SDR_TO_HDR10;
        s32Ret = pq_hal_GetSDR2HDRCfg(pstPqHdrCfg);
    }

    return s32Ret;
}

static HI_VOID pq_hal_SetHDRPqParamDefault(HI_VOID)
{
    if (HI_NULL == sg_pstHdrBinPara)
    {
        return;
    }

    PQ_SAFE_MEMCPY(sg_pstHdrBinPara->stPQCoef.stHdrTmCoef.as16TMLut, &sg_stHdrCfg, sizeof(sg_stHdrCfg));
    return ;
}

static HI_VOID pq_hal_GetSMLutI(PQ_HDR_ALG_TM *pstHdrCfg)
{
    if (HI_NULL == pstHdrCfg)
    {
        return;
    }

    PQ_SAFE_MEMCPY(sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_SDR], pstHdrCfg->as16HDR2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI], sizeof(sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_SDR]));
    PQ_SAFE_MEMCPY(sg_aSMLutI[HI_PQ_HDR_MODE_HLG_TO_SDR],  pstHdrCfg->as16HLG2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI],   sizeof(sg_aSMLutI[HI_PQ_HDR_MODE_HLG_TO_SDR]));
    PQ_SAFE_MEMCPY(sg_aSMLutI[HI_PQ_HDR_MODE_HLG_TO_HDR10], pstHdrCfg->as16HLG2HDRTMLut[PQ_HAL_HDR_TM_SMLUTI], sizeof(sg_aSMLutI[HI_PQ_HDR_MODE_HLG_TO_HDR10]));
    PQ_SAFE_MEMCPY(sg_aSMLutI[HI_PQ_HDR_MODE_SDR_TO_HDR10], pstHdrCfg->as16SDR2HDRTMLut[PQ_HAL_HDR_TM_SMLUTI], sizeof(sg_aSMLutI[HI_PQ_HDR_MODE_SDR_TO_HDR10]));
    PQ_SAFE_MEMCPY(sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_HLG], pstHdrCfg->as16HDR2HLGTMLut[PQ_HAL_HDR_TM_SMLUTI], sizeof(sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_HLG]));

    return ;
}

HI_S32 PQ_HAL_SetHdrCscSetting(HI_PQ_PICTURE_SETTING_S *pstPicSetting)
{
    HI_U32 i = 0;
    HI_S32 s32Gain = 0;

    PQ_CHECK_NULL_PTR_RE_FAIL(pstPicSetting);

    s32Gain = (HI_S32)pstPicSetting->u16Saturation - 50;
    for (i = 0; i < PQ_HAL_HDR_TM_LUT_SIZE; i++)
    {
        sg_stHdrCfg.as16HDR2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI][i]
            = sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_SDR][i] + sg_aSMLutI[HI_PQ_HDR_MODE_HDR10_TO_SDR][i] * s32Gain / 50;
        sg_stHdrCfg.as16HDR2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI][i]
            = CLIP3(sg_stHdrCfg.as16HDR2SDRTMLut[PQ_HAL_HDR_TM_SMLUTI][i], 0, 4095);
    }

    return HI_SUCCESS;
}

HI_S32 PQ_HAL_InitHDR(PQ_PARAM_S *pstPqParam, HI_BOOL bParaUseTableDefault)
{
    HI_PQ_PICTURE_SETTING_S stPicSetting = {50, 50, 50, 50};

    sg_pstHdrBinPara = pstPqParam;

    PQ_CHECK_NULL_PTR_RE_FAIL(sg_pstHdrBinPara);

    PQ_SAFE_MEMSET(&sg_stHdrCfg, 0, sizeof(sg_stHdrCfg));
    PQ_SAFE_MEMSET(sg_aSMLutI, 0, sizeof(sg_aSMLutI));

    if (HI_TRUE == bParaUseTableDefault)
    {
        PQ_MNG_DescrambleHdrCfg(PQ_HDR_ALG_CFG_TYPE_TM, &sg_stHdrCfg);
        pq_hal_SetHDRPqParamDefault();
    }
    else
    {
        PQ_SAFE_MEMCPY(&sg_stHdrCfg, sg_pstHdrBinPara->stPQCoef.stHdrTmCoef.as16TMLut, sizeof(sg_stHdrCfg));
    }

    pq_hal_GetHDRDefaultCfg(&sg_stHdrCfg);

    pq_hal_GetSMLutI(&sg_stHdrCfg);
    PQ_HAL_SetHdrCscSetting(&stPicSetting);

    return HI_SUCCESS;
}


static HI_S32 pq_hal_GetHDRCfgTmLut(HI_S16 (**pas16TMLut)[PQ_HAL_HDR_TM_LUT_SIZE],
                                    HI_PQ_HDR_MODE_E enHDRMode)
{
    if (HI_PQ_HDR_MODE_HDR10_TO_SDR == sg_enHDRMode)
    {
        *pas16TMLut =  sg_stHdrCfg.as16HDR2SDRTMLut;
    }
    else if (HI_PQ_HDR_MODE_HLG_TO_SDR == sg_enHDRMode)
    {
        *pas16TMLut =  sg_stHdrCfg.as16HLG2SDRTMLut;
    }
    else if (HI_PQ_HDR_MODE_HLG_TO_HDR10 == sg_enHDRMode)
    {
        *pas16TMLut =  sg_stHdrCfg.as16HLG2HDRTMLut;
    }
    else if (HI_PQ_HDR_MODE_SDR_TO_HDR10 == sg_enHDRMode)
    {
        *pas16TMLut =  sg_stHdrCfg.as16SDR2HDRTMLut;
    }
    else if (HI_PQ_HDR_MODE_HDR10_TO_HLG == sg_enHDRMode)
    {
        *pas16TMLut =  sg_stHdrCfg.as16HDR2HLGTMLut;
    }
    else
    {
        *pas16TMLut = HI_NULL;
        return HI_FAILURE;
    }

    return HI_SUCCESS;
}

HI_S32 PQ_HAL_SetHDRTmLut(HI_PQ_HDR_TM_LUT_S *pstTmapLut)
{
    HI_S16 (*pas16TMLut)[PQ_HAL_HDR_TM_LUT_SIZE];

    pq_hal_GetHDRCfgTmLut(&pas16TMLut, sg_enHDRMode);

    PQ_CHECK_NULL_PTR_RE_FAIL(pstTmapLut);
    PQ_CHECK_NULL_PTR_RE_FAIL(pas16TMLut);

    PQ_SAFE_MEMCPY((HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_TMLUTI]), (HI_VOID *)(pstTmapLut->as16TMLutI), sizeof(pas16TMLut[PQ_HAL_HDR_TM_TMLUTI]));
    PQ_SAFE_MEMCPY((HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_TMLUTS]), (HI_VOID *)(pstTmapLut->as16TMLutS), sizeof(pas16TMLut[PQ_HAL_HDR_TM_TMLUTS]));
    PQ_SAFE_MEMCPY((HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_SMLUTI]), (HI_VOID *)(pstTmapLut->as16SMLutI), sizeof(pas16TMLut[PQ_HAL_HDR_TM_SMLUTI]));
    PQ_SAFE_MEMCPY((HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_SMLUTS]), (HI_VOID *)(pstTmapLut->as16SMLutS), sizeof(pas16TMLut[PQ_HAL_HDR_TM_SMLUTS]));

    pq_hal_SetHDRPqParamDefault();

    return HI_SUCCESS;
}

HI_S32 PQ_HAL_GetHDRTmLut(HI_PQ_HDR_TM_LUT_S *pstTmapLut)
{
    HI_S16 (*pas16TMLut)[PQ_HAL_HDR_TM_LUT_SIZE];

    pq_hal_GetHDRCfgTmLut(&pas16TMLut, sg_enHDRMode);

    PQ_CHECK_NULL_PTR_RE_FAIL(pstTmapLut);
    PQ_CHECK_NULL_PTR_RE_FAIL(pas16TMLut);

    PQ_SAFE_MEMCPY((HI_VOID *)(pstTmapLut->as16TMLutI), (HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_TMLUTI]), sizeof(pstTmapLut->as16TMLutI));
    PQ_SAFE_MEMCPY((HI_VOID *)(pstTmapLut->as16TMLutS), (HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_TMLUTS]), sizeof(pstTmapLut->as16TMLutS));
    PQ_SAFE_MEMCPY((HI_VOID *)(pstTmapLut->as16SMLutI), (HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_SMLUTI]), sizeof(pstTmapLut->as16SMLutI));
    PQ_SAFE_MEMCPY((HI_VOID *)(pstTmapLut->as16SMLutS), (HI_VOID *) & (pas16TMLut[PQ_HAL_HDR_TM_SMLUTS]), sizeof(pstTmapLut->as16SMLutS));

    return HI_SUCCESS;
}

HI_S32 PQ_HAL_SetHDRDefaultCfg(HI_BOOL bDefault)
{
    if (bDefault == HI_FALSE)
    {
        PQ_MNG_ScrambleHdrCfg(PQ_HDR_ALG_CFG_TYPE_TM);
    }
    else
    {
        pq_hal_SetHDRPqParamDefault();
    }

    return HI_SUCCESS;
}


